package com.bx.implatform.growUp.service;

import com.bx.implatform.growUp.param.*;
import com.bx.implatform.kafka.entity.PublishApproveChange;
import com.fasterxml.jackson.databind.JsonNode;
import jakarta.validation.Valid;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

@Service
public interface GrowUpApiService {


    /**
     * 路线列表
     *
     * @return
     */
    JsonNode getRoads();

    /**
     * 事件类型列表
     *
     * @return
     */
    JsonNode getEventTypeList();

    /**
     * 事件类别列表
     *
     * @return
     */
    JsonNode getEventCategoryList();

    /**
     * 事件列表
     *
     * @return
     */
    JsonNode getEventList(@Valid GetEventListParam param,String userId);

    /**
     * 事件动态信息
     *
     * @return
     */
    JsonNode getEventDynamicInfoList(String eventId);

    /**
     * 上传文件
     *
     * @return
     */
    JsonNode uploadFile(MultipartFile file);

    /**
     * 保存事件进度
     *
     * @return
     */
    JsonNode saveEventProgress(SaveEventProgressParam param);

    /**
     * 通过token获取用户id
     *
     * @return
     */
    String getUserIdByToken(String token);

    /**
     * 获取事件进度列表
     *
     * @return
     */
    JsonNode getEventProgressList(String eventId);

    /**
     * 获取事件统计
     *
     * @return
     */
    JsonNode getEventTypeStatistics(GetEventTypeStatisticsParam param);

    /**
     * 获取告警类型分组
     *
     * @return
     */
    JsonNode getAlarmTypeGroup();

    /**
     * 获取告警类型
     *
     * @return
     */
    JsonNode getAlarmTypeList();

    /**
     * 获取告警列表
     *
     * @return
     */
    JsonNode getAlarmList(GetAlarmListParam param);

    /**
     * 上报告警
     *
     * @return
     */
    JsonNode saveAlarm(SaveAlarmParam param);

    /**
     * 获取路况列表
     *
     * @return
     */
    JsonNode getTrafficStateList();

    /**
     * 获取事件分流路线记录
     *
     * @return
     */
    JsonNode getEventDivideRoute(String eventId, String id);

    /**
     * 获取摄像机视频播放地址
     *
     * @return
     */
    String getVideoPlayUrl(String deviceId, String videoType);

    /**
     * 获取用户资源
     *
     * @return
     */
    JsonNode getRoleAndResource();

    /**
     * 接受事件处置卡反馈
     *
     * @return
     */
    JsonNode receiveEmergencyTask(String taskId);

    /**
     * 撤销报警
     *
     * @return
     */
    JsonNode revokeAlarm(String id);

    /**
     * 获取事件附近摄像机
     *
     * @return
     */
    JsonNode getEventNearByCameras(String eventId, Integer count);

    /**
     * 查询用户上报记录
     *
     * @return
     */
    JsonNode getUserReportRecordList(GrowUpBaseParam param);

    /**
     * 查询审批单
     *
     * @return
     */
    JsonNode approveDetail(String id);

    /**
     * 获取车载终端列表
     *
     * @return
     */
    JsonNode getVehicleWithVideoList();

    /**
     * 获取车辆实时位置
     *
     * @return
     */
    JsonNode getVehiclePosition(List<String> ids);

    /**
     * 审批通过
     *
     * @return
     */
    JsonNode approveAccess(PublishApproveChange param);

    /**
     * 审批拒绝
     *
     * @return
     */
    JsonNode approveReject(PublishApproveChange param);
}
